package webbrow.board.reply.model;

import java.util.List;

import org.mybatis.spring.SqlSessionTemplate;

import webbrow.board.component.BoardReplyDao;
import webbrow.board.vo.BoardReplyVO;

public class BoardReplyDaoImpl implements BoardReplyDao {
	private SqlSessionTemplate sqlSessionTemplate;
	public BoardReplyDaoImpl(SqlSessionTemplate sqlSessionTemplate){
		this.sqlSessionTemplate=sqlSessionTemplate;
	}
	
	/**
	 * 유저가 입력한 댓글을 board_reply 테이블에 insert하는 메소드
	 */
	@Override
	public void insertReply(BoardReplyVO rvo) throws Exception {
		sqlSessionTemplate.insert("reply.insertReply", rvo);
	}
	
	/**
	 * 댓글의 모든 리스트를 select해오는 메소드
	 */
	@Override
	public List<BoardReplyVO> selectAllBoardReplyList() throws Exception {
		return sqlSessionTemplate.selectList("reply.selectAllBoardReplyList");
	}

	/**
	 * 글번호에 해당하는 댓글의 모든 리스트를 select해오는 메소드
	 */
	@Override
	public List<BoardReplyVO> selectReplyList(int no) throws Exception {
		return sqlSessionTemplate.selectList("reply.selectReplyList", no);
	}

	/**
	 * 댓글 번호에 해당하는 댓글을 하나 삭제하는 메소드
	 */
	@Override
	public void deleteReply(int re_no) throws Exception {
		sqlSessionTemplate.delete("reply.deleteReply", re_no);
	}
	
	/**
	 * 글 삭제시 달린 댓글을 모두 삭제하는 메소드
	 */
	@Override
	public void deleteReplyList(int no) throws Exception {
		sqlSessionTemplate.delete("reply.deleteReplyList",no);
	}
	
	/**
	 * 댓글 번호에 대항하는 글 하나만 가져오는 메소드
	 */
	@Override
	public BoardReplyVO selectReplyByReNo(int re_no) throws Exception {
		return sqlSessionTemplate.selectOne("reply.selectReplyByReNo", re_no);
	}

	/**
	 * 댓글을 업데이트 시키는 메소드
	 */
	@Override
	public void updateReply(BoardReplyVO rvo) throws Exception {
		sqlSessionTemplate.update("reply.updateReply", rvo);
	}

	/**
	 * 댓글 삭제시 신고 리스트도 함께 지운다
	 */
	@Override
	public void deleteReplyReportHistory(int re_no) throws Exception {
		sqlSessionTemplate.delete("reply.deleteReplyReportHistory", re_no);
	}


}
